package org.japo.java.swing.igu;

import com.sun.jmx.snmp.BerDecoder;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.japo.java.basics.entities.Nif;
import org.japo.java.swing.listeners.GEA;

/**
 *
 * @author CicloM Hola, genero un cambio :D
 */
public class IGU extends JFrame {

    JLabel lblLetra;
    JTextField txfDni;

    public IGU() {
        iniciarComponentes();
    }

    private void iniciarComponentes() {
        //Crear el panel principal
        JPanel pnlPrincipal = new JPanel();

        // -------------------------------------------
        GEA gea = new GEA(this);

        //Parametros de txfDNI
        
        //Primero creamos "JTextField txfDni" pero lo añadimos fuera
        //para que el metodo procesarNif pueda usarlo
        // Letra
        Font f = new Font("Calibri", Font.PLAIN, 50);
        //Campo de texto
        txfDni = new JTextField();
        //Le damos un texto predeterminado
        txfDni.setText("88888888");
        //Para que empieze a escribir por la derecha
        txfDni.setHorizontalAlignment(JTextField.RIGHT);
        //seleccionamos la fuente que hemos instanciado en letra
        txfDni.setFont(f);
        //Vinculamos la accion y la reaccion, es decir cuando pulsemos enter llamara al gea
        txfDni.addActionListener(gea);
        //ancho visible del textfield
        txfDni.setColumns(5);
        //añadimos al panel todos los parametros de txfDNI
        pnlPrincipal.add(txfDni);

        
        //Creamos lblGuion
        JLabel lblGuion = new JLabel();
        //añadimos el texto predeterminado
        lblGuion.setText("-");
        //la fuente usamos la anteriormente instanciada
        lblGuion.setFont(f);
        //añadimos el guion al panel principal
        pnlPrincipal.add(lblGuion);
        
        //creamos el "JLabel lblLetra" pero tambien hay
        //que ponerlo fuera como con txfDNI
        lblLetra = new JLabel();
        //Texto predeterminado
        lblLetra.setText("?");
        //estilo de letra ya instanciado
        lblLetra.setFont(f);
        //añadimos el JLabel al panel principal
        pnlPrincipal.add(lblLetra);

        // --------------------------------------------
        // Ventana
        //JFrame ventena = new JFrame();
        add(pnlPrincipal);

        //asignarle valor a la X de la ventana
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Titulo de la ventana
        setTitle("Calcular NIF");
        
        //hace que el user no pueda cambiar el tamaño de la ventana
        setResizable(false);
        //ajustar el tamaño de la ventana al contenido
        pack();
        setLocationRelativeTo(null);
    }

    public void procesarNif() {
        try {
            // Obtener el texto
            String texto = txfDni.getText();
            // Convertir el texto anumero
            int dni = Integer.parseInt(texto);
                    // Calcular la letra
            char letra = Nif.calcularLetraNif(dni);
                    // Mostrarla, como letra es solo un char, le añadimos unas comillas con espacio, para que sea un texto
            lblLetra.setText(letra + "");
        } catch (Exception e) {
            //en caso de error el JLabel mostrara por defecto el asterisco
            lblLetra.setText("*");
        }
    }

}
